unit UrotinaApagaMovimento;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, URotinasBase, DB, DBCtrls, StdCtrls, ComCtrls, Buttons, ExtCtrls,
  Mask, ToolEdit;

type
  TFrotinaApagaMovimento = class(TFRotinasBase)
    Label1: TLabel;
    Label2: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    DSLocal: TDataSource;
    DSLocal1: TDataSource;
    DSEmpresa: TDataSource;
    DateEdit1: TDateEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnExecClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
   procedure excluir_movimento();
   procedure zera_saldo_local_e_estoque();
  end;

var
  FrotinaApagaMovimento: TFrotinaApagaMovimento;

implementation

uses UGeral;

{$R *.dfm}




procedure TFrotinaApagaMovimento.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;

  FrotinaApagaMovimento.Release;
  FrotinaApagaMovimento:= nil;

end;

procedure TFrotinaApagaMovimento.BtnExecClick(Sender: TObject);
const
SQL_DIFERENTES =
'DELETE from movimentoestoque '+
'where movimentoestoque.movest_codigo in ( '+
'         select itensmovimentoestoque.itensmovest_movimentoestoque '+
'             FROM itensmovimentoestoque '+
'             right join movimentoestoque on '+
'                      ((itensmovimentoestoque.itensmovest_movimentoestoque = movimentoestoque.movest_codigo)and '+
'                       (itensmovimentoestoque.itensmovest_local <> movimentoestoque.movest_local)) '+
'             where (movimentoestoque.codigoempresa = %s) and (itensmovimentoestoque.itensmovest_local = %s) and (movimentoestoque.movest_datalancamento < %s))';

SQL_movest =
'DELETE from movimentoestoque '+
'where movimentoestoque.codigoempresa = %s and '+
'     (movimentoestoque.movest_local  = %s or movimentoestoque.movest_local is null) and '+
'     movimentoestoque.movest_datalancamento < %s ';

   SQL_itens =
'DELETE from itensmovimentoestoque '+
'where itensmovimentoestoque.itensmovest_movimentoestoque in ( '+
'   select movimentoestoque.movest_codigo from movimentoestoque '+
'   where movimentoestoque.codigoempresa = %s and '+
'         (movimentoestoque.movest_local = %s or movimentoestoque.movest_local is null) AND'+
'         movimentoestoque.movest_datalancamento < %s )';

begin
    if DBLookupComboBox2.KeyValue = null then
    begin
      ShowMessage('Selecione a empresa.');
      exit;
    end;
    if DBLookupComboBox1.KeyValue = null then
    begin
      ShowMessage('Selecione o local.');
      exit;
    end;
    if DateEdit1.Date = 0 then
    begin
      ShowMessage('Selecione a data limite.');
      exit;
    end;

    if application.MessageBox('Deseja realmente excluir os movimentos? ','',
                          MB_YESNO + MB_IconQuestion + MB_DefButton2) = IDno  then
      exit;

  executaSQL(Format(SQL_DIFERENTES,[QuotedStr(DBLookupComboBox2.KeyValue),QuotedStr(DBLookupComboBox1.KeyValue),QuotedStr(FormatDateTime('mm/dd/yyyy 23:59:59',DateEdit1.Date))]));
  executaSQL(Format(SQL_itens,[QuotedStr(DBLookupComboBox2.KeyValue),QuotedStr(DBLookupComboBox1.KeyValue),QuotedStr(FormatDateTime('mm/dd/yyyy 23:59:59',DateEdit1.Date))]));
  executaSQL(Format(SQL_movest,[QuotedStr(DBLookupComboBox2.KeyValue),QuotedStr(DBLookupComboBox1.KeyValue),QuotedStr(FormatDateTime('mm/dd/yyyy 23 59:59',DateEdit1.Date))]));

    ShowMessage('Processo realizado com sucesso!');
    FrotinaApagaMovimento.Close;

  inherited;

end;

procedure TFrotinaApagaMovimento.excluir_movimento;
begin

end;

procedure TFrotinaApagaMovimento.zera_saldo_local_e_estoque;
begin

end;

end.
